# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:张广勤
@Web site: https://www.tunan.wang
@Github:www.github.com
 
@File:bianli_quanguo_gongbao.py
@Time:2024/9/11 14:34

@Motto:不积跬步无以至千里，不积小流无以成江海！
"""

# 遍历全国公报，streamlit侧边栏列表反序显示文件名(不含扩展名)，选择其中一个文件后，显示文件内容
# 公报指定关键字搜索

import os
import re
import streamlit as st
# from gongbao_quanguo.article_list_zip_file_list import dictionary
from gongbao_quanguo.article_list_zip_file_list import get_file_list, get_article_list


# 设置页面配置
# st.set_page_config(page_title="文本文件浏览器", page_icon="📄")

# 获取当前工作目录下的所有txt文件
def get_txt_files(directory):
    txt_files = [f for f in os.listdir(directory) if f.endswith('.txt') and '七五' not in f]
    txt_files.sort(reverse=True)  # 反序排序
    return txt_files

# 读取文件内容
def read_file_content(file_path):
    with open(file_path, 'r', encoding='utf-8') as file:
        return file.read()

# 主函数
# def main():
# 从下拉列表中选择文件后，显示文件内容
def display():
    # 设置侧边栏
    # sidebar = st.sidebar
    # 选择文件夹
    # directory = sidebar.text_input("选择文件夹", "gongbao_quanguo/gongbao_quanguo/output_txt/")
    # 获取所有txt文件
    txt_files = get_txt_files(directory)
    # 显示文件列表
    selected_file = sidebar.selectbox("选择文件", txt_files, index=0)

    # 显示文件内容
    if selected_file:
        #查看原文
        # st.markdown("<a href="+"f'{dictionary[selected_file]}'"+" target='_blank'>查看原文</a>")
        # st.write('<a href="' + f'{dictionary[selected_file]}' + '" target="_blank">查看原文</a>')
        # st.markdown(f'<a href="{dictionary[selected_file]}" target="_blank">查看原文</a>')
        # st.markdown(f'<a href="{dictionary[selected_file]}" target="_blank">查看原文</a>')
        st.markdown(f'[查看原文][{dictionary[selected_file]}]')
        file_path = os.path.join(directory, selected_file)
        content = read_file_content(file_path)
        st.markdown(content, unsafe_allow_html=True)

# if __name__ == "__main__":
#     main()
#没有参数的函数，参数要求用户能过键盘输入
def input_keywords():
    #匹配项包括中文逗号、英文逗号、中文顿号、空格\s
    delimiter_pattern = re.compile(r'[，,、\s]+')

    # 获取用户输入的字符串，转为一个列表，如果用其他标点分割，则认为是一个字符串
    user_input = st.text_input("请输入不多于四个关键字，可用中文逗号、英文逗号、顿号或空格分隔: ", '国内生产总值、人口')

    # 使用正则表达式分割字符串,存入列表
    variables_list = delimiter_pattern.split(user_input)

    # 去除列表中的空字符串（如果用户在分隔符之间没有输入任何内容）
    variables_list = [var for var in variables_list if var]

    # 假设我们只关心前四个变量（如果用户输入了更多，我们可以选择忽略）
    # 注意：如果输入少于四个变量，列表将只包含实际输入的变量
    if len(variables_list) > 4:
        variables_list = variables_list[:4]  # 只取前四个

    return variables_list


def extract_paragraphs_with_keywords(folder_path,keywords):
    # 创建一个空列表来存储找到的段落
    paragraphs_with_keywords = []

    # 遍历文件夹下的所有文件
    for filename in os.listdir(folder_path):
        if filename.endswith(".txt") and '七五' not in filename:  # 检查文件是否为文本文件
            #拼接文件夹和文件名
            file_path = os.path.join(folder_path, filename)
            #打开文件
            with open(file_path, 'r', encoding='utf-8') as file:
                # 读取文件内容
                content = file.read()

                # 假设每个段落由空行分隔
                paragraphs = content.split('\n\n')
                #文件中先写上文件名，多个段落写一个文件名
                paragraphs_with_keywords.append('### ' + filename + '\n')
                # 遍历每个段落，检查是否包含关键字，只有包括其中一个就摘录段落
                for paragraph in paragraphs:
                    if any(keyword in paragraph for keyword in keywords):
                        # paragraphs_with_keywords.append('### '+filename+'\n')
                        paragraphs_with_keywords.append(paragraph + '\n\n')

    for para in paragraphs_with_keywords:
        st.markdown(para, unsafe_allow_html=True)

# 设置侧边栏
sidebar = st.sidebar
# 选择文件夹
folder_path = "gongbao_quanguo/gongbao_quanguo/output_txt/"
# directory = sidebar.text_input("选择文件夹", folder_path)
directory = folder_path
# 获取所有txt文件
# display()
# keywords = input_keywords()
# extract_paragraphs_with_keywords(folder_path, keywords)

art_list = get_article_list()
art_list = [element for sublist in art_list for element in sublist]
# art_list = art_list.sort(reverse=True)
# art_list = sorted(art_list, key=lambda x: x[0], reverse=True)
# 删除“七五时期”项
art_list = [item for item in art_list if item[0] != '七五时期']
# 按年份正序排列
art_list = sorted(art_list, key=lambda x: x[0])
art_list = [link for _, link in art_list]

file_list = get_file_list(directory)
# 删除含 “七五”项
file_list = [file for file in file_list if "七五" not in file]

combined_list = list(zip(file_list, art_list))
dictionary = dict(zip(file_list, art_list))
# print(art_list)
# print(file_list)
# print(combined_list)
# print(dictionary)



